\chapter{Introduction}

\section{What is SimSpark?}

SimSpark is a multi-agent simulation system for agents in
three-dimensional environments. Its goal is to provide a high degree
of flexibility for creating new types of simulations. It builds on a
flexible application framework and exhausts the idea of replaceable
components throughout its implementation.

In comparison to specialized simulators, users can create new
simulations by using a scene description language. SimSpark is a
powerful tool to state different multi-agent research questions and is
used as the official simulator for the RoboCup Simulation League
competition.

\section{History of the Project}

SimSpark was developed as part of the RoboCup initiative, initially
called Robot World Cup Initiative. It is an international research and
education initiative. It is an attempt to foster AI and intelligent
robotics research by providing a standard problem where wide range of
technologies can be integrated and examined, as well as being used for
integrated project-oriented education.

For this purpose, RoboCup chose to use soccer game as a primary
domain, and organizes competitive RoboCups. The simulation league is
one of several leagues where the entire soccer game takes places in a
simulated environment. SimSpark's two dimensional predecessor
simulation models the players and the ball as flat spheres. It further
lacks a realistic physical environment.

As one of the long term goals of the soccer simulation is to aim for
realism the long term objective are realistic humanoid players in a
physical environment. These players should one day challenge the
champion of the most recent World Cup.

Therefore, on the RoboCup 2003 Symposium a new approach to a
three-dimensional physically realistic soccer simulation was
proposed~\cite{KO04}. In a road map discussion for the Soccer Simulation League on
RoboCup 2003, the participants decided on adding the three-dimensional
simulation to the competitions.

For RoboCup 2004, SimSpark was successfully used for the first
official competition in RoboCup Simulation League 3D.  The soccer
simulation for this tournament was developed in parallel with the
SimSpark simulator. In its initial version players were modeled as
spheres in a physical three dimensional world. Since then SimSpark
grew considerably and now supports humanoid players with
articulated bodies.

It served from the beginning as a test bed and a guide for essential
new features that were added to the simulator during
development. However changes to the simulator core were never
customized for the soccer simulation. Instead generic
simulator services were implemented with all soccer specific
details contained in a set of plugins (see \cite{OR05}).

\section{About this Manual}

% add contact and download location

This manual describes the SimSpark simulator. Like the simulator
itself it is subject to constant change in an ongoing development
effort. It assumes that you are familiar with the basic concepts of
multi agent simulations.

It aims to be a guide on how to develop your own RoboCup agents,
construct new robot models, build your own custom monitor or use the
trainer command protocol to test your agents.

If there are errors, inconsistencies, or oddities, please send a
message to the SimSpark developer mailing list
\footnote{simspark-devel@lists.sourceforge.net} (please see chapter
\ref{cha:resources} for details) with the location of the error and a
suggestion of how it should be corrected. We are always looking for
anyone who has an idea on how to improve the manual, as well as
proofread or rewrite a section of the manual.

The latest manual can be downloaded at the SimSpark project homepage
\footnote{\url{http://simspark.sourceforge.net/}}.

\section{Reader's Guide to the Manual}

This section gives a rough overview about the contents of this manual.

In chapter \ref{cha:overview} we give a short overview introduction
and to the system and its defining components. This overview is given
both from a component view that distinguishes the server, the monitor
the logplayer etc. and from a software architecture point of view. In
the latter we describe the different software modules, their purpose
and responsibility.

In chapter \ref{cha:getstarted} you will find instructions howto build
SimSpark from source and how to install it into your system. Further
an illustrated example run of a simulation is given as a first guide
to get the you started.

The following chapter \ref{cha:simspark} is a reference gives you
detailed information about the messages that are sent from the server
to the agent and vice versa. These messages contain information about
agent percepts and agent command strings.

In chapter \ref{cha:rcssmonitor3d} we give an overview about the
available monitor and log player setups. Their configuration and usage
is described in detail there.

The following chapter \ref{cha:rcssagent3d} explains the
\texttt{rcssagent3d} demo agent. This agent is a reference implementation and 
a basis to start your own agent implementation work. We explain how
to configure the agent to use custom behavior implementations.

In chapter \ref{cha:simulations} we introduce simulations that are
currently available for SimSpark. In particular the soccer simulation
is described in detail here.

The robot models, and in particular our Soccerbot is described in
chapter \ref{cha:robots}.

In the resources chapter \ref{cha:resources} we point you to further
papers and thesis works related to SimSpark. In addition mailing
lists, web sites and IRC channels are given that allow you to
participate in the project and to reach the SimSpark developers.

% where to download the server, how to contact the developer community and report bugs; 
% links to papers and thesis works related to SimSpark

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "user-manual"
%%% End: 
